﻿2026-05-16T03:15:05.6504334Z ##[group]Run pnpm verify:phase-5
2026-05-16T03:15:05.6504678Z [36;1mpnpm verify:phase-5[0m
2026-05-16T03:15:05.6541722Z shell: /usr/bin/bash -e {0}
2026-05-16T03:15:05.6541996Z env:
2026-05-16T03:15:05.6542265Z   PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
2026-05-16T03:15:05.6542605Z   SKIP_PHASE_3_CARRYOVER: 1
2026-05-16T03:15:05.6542849Z   SKIP_TRACE_CHECK: 1
2026-05-16T03:15:05.6543073Z ##[endgroup]
2026-05-16T03:15:05.9368884Z 
2026-05-16T03:15:05.9370040Z > rebno@0.0.0 verify:phase-5 /home/runner/work/rebno/rebno
2026-05-16T03:15:05.9371013Z > node scripts/verify-phase-5.mjs
2026-05-16T03:15:05.9371555Z 
2026-05-16T03:15:05.9803961Z 
2026-05-16T03:15:05.9805052Z === Phase 4 carry-over: verify-phase-4 ===
2026-05-16T03:15:05.9809195Z >>> pnpm verify:phase-4
2026-05-16T03:15:06.2755813Z 
2026-05-16T03:15:06.2756954Z > rebno@0.0.0 verify:phase-4 /home/runner/work/rebno/rebno
2026-05-16T03:15:06.2757919Z > node scripts/verify-phase-4.mjs
2026-05-16T03:15:06.2758436Z 
2026-05-16T03:15:06.3060347Z 
2026-05-16T03:15:06.3061189Z === Workspace: typecheck ===
2026-05-16T03:15:06.3062039Z >>> pnpm -r typecheck
2026-05-16T03:15:06.6485988Z Scope: 5 of 6 workspace projects
2026-05-16T03:15:06.6540216Z packages/db typecheck$ tsc --noEmit
2026-05-16T03:15:06.6548881Z packages/game-logic typecheck$ tsc --noEmit
2026-05-16T03:15:09.1804493Z packages/game-logic typecheck: Done
2026-05-16T03:15:09.1805598Z packages/protocol typecheck$ tsc --noEmit
2026-05-16T03:15:11.4022420Z packages/db typecheck: Done
2026-05-16T03:15:12.6141924Z packages/protocol typecheck: Done
2026-05-16T03:15:12.6148931Z apps/client typecheck$ tsc --noEmit
2026-05-16T03:15:12.6151703Z apps/server typecheck$ tsc --noEmit
2026-05-16T03:15:24.8595728Z apps/client typecheck: Done
2026-05-16T03:15:25.2554808Z apps/server typecheck: Done
2026-05-16T03:15:25.2651564Z 
2026-05-16T03:15:25.2652355Z === Lint: protocol-sync ===
2026-05-16T03:15:25.2653700Z >>> pnpm lint:protocol-sync
2026-05-16T03:15:25.5585134Z 
2026-05-16T03:15:25.5586646Z > rebno@0.0.0 lint:protocol-sync /home/runner/work/rebno/rebno
2026-05-16T03:15:25.5587866Z > node tools/scripts/lint-protocol-sync.mjs
2026-05-16T03:15:25.5588403Z 
2026-05-16T03:15:25.5918563Z lint-protocol-sync: OK
2026-05-16T03:15:25.6050554Z 
2026-05-16T03:15:25.6051327Z === Lint: game-logic-purity ===
2026-05-16T03:15:25.6052188Z >>> pnpm lint:game-logic-purity
2026-05-16T03:15:25.8990974Z 
2026-05-16T03:15:25.8991943Z > rebno@0.0.0 lint:game-logic-purity /home/runner/work/rebno/rebno
2026-05-16T03:15:25.8992813Z > node tools/scripts/lint-game-logic-purity.mjs
2026-05-16T03:15:25.8993340Z 
2026-05-16T03:15:25.9323993Z lint-game-logic-purity: OK (8 file(s) clean)
2026-05-16T03:15:25.9460306Z 
2026-05-16T03:15:25.9461318Z === Lint: better-auth-schema-sync ===
2026-05-16T03:15:25.9462462Z >>> pnpm lint:better-auth-schema-sync
2026-05-16T03:15:26.2492614Z 
2026-05-16T03:15:26.2494059Z > rebno@0.0.0 lint:better-auth-schema-sync /home/runner/work/rebno/rebno
2026-05-16T03:15:26.2495311Z > node tools/scripts/lint-better-auth-schema-sync.mjs
2026-05-16T03:15:26.2496066Z 
2026-05-16T03:15:27.7596428Z lint-better-auth-schema-sync: OK
2026-05-16T03:15:27.7744075Z 
2026-05-16T03:15:27.7745021Z === Lint: rate-limit-budgets ===
2026-05-16T03:15:27.7745950Z >>> pnpm lint:rate-limit-budgets
2026-05-16T03:15:28.0657721Z 
2026-05-16T03:15:28.0659028Z > rebno@0.0.0 lint:rate-limit-budgets /home/runner/work/rebno/rebno
2026-05-16T03:15:28.0660382Z > node tools/scripts/lint-rate-limit-budgets.mjs
2026-05-16T03:15:28.0661051Z 
2026-05-16T03:15:28.0997935Z lint-rate-limit-budgets: OK (5 D-22 budgets locked)
2026-05-16T03:15:28.1130063Z 
2026-05-16T03:15:28.1130894Z === Lint: no-clipboard-rce ===
2026-05-16T03:15:28.1131730Z >>> pnpm lint:no-clipboard-rce
2026-05-16T03:15:28.4022521Z 
2026-05-16T03:15:28.4023937Z > rebno@0.0.0 lint:no-clipboard-rce /home/runner/work/rebno/rebno
2026-05-16T03:15:28.4025342Z > node tools/scripts/lint-no-clipboard-rce.mjs
2026-05-16T03:15:28.4026013Z 
2026-05-16T03:15:28.4374434Z lint-no-clipboard-rce: OK (22 file(s) clean)
2026-05-16T03:15:28.4501682Z 
2026-05-16T03:15:28.4502250Z === Lint: room-layout ===
2026-05-16T03:15:28.4503717Z >>> pnpm lint:room-layout
2026-05-16T03:15:28.7407589Z 
2026-05-16T03:15:28.7408831Z > rebno@0.0.0 lint:room-layout /home/runner/work/rebno/rebno
2026-05-16T03:15:28.7410138Z > node tools/scripts/lint-room-layout.mjs
2026-05-16T03:15:28.7410773Z 
2026-05-16T03:15:28.7784536Z lint-room-layout: OK
2026-05-16T03:15:28.7915786Z 
2026-05-16T03:15:28.7916488Z === ADR 0004 lint ===
2026-05-16T03:15:28.7917254Z >>> pnpm lint:adr:0004
2026-05-16T03:15:29.0935632Z 
2026-05-16T03:15:29.0936805Z > rebno@0.0.0 lint:adr:0004 /home/runner/work/rebno/rebno
2026-05-16T03:15:29.0938242Z > node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0004-room-hot-reload.md --no-matrix
2026-05-16T03:15:29.0939377Z 
2026-05-16T03:15:29.1252093Z OK: ADR docs/adr/0004-room-hot-reload.md validated (no-matrix mode — Michael Nygard sections present)
2026-05-16T03:15:29.1378362Z 
2026-05-16T03:15:29.1379064Z === Drizzle: emit-check ===
2026-05-16T03:15:29.1379745Z >>> pnpm db:emit-check
2026-05-16T03:15:29.4284631Z 
2026-05-16T03:15:29.4285825Z > rebno@0.0.0 db:emit-check /home/runner/work/rebno/rebno
2026-05-16T03:15:29.4288634Z > pnpm -C packages/db exec drizzle-kit generate && node -e "require('fs').copyFileSync('packages/db/migrations/0001_baseline.sql','docs/extracted-server/0001_baseline.sql')" && git diff --exit-code packages/db/migrations/0001_baseline.sql docs/extracted-server/0001_baseline.sql
2026-05-16T03:15:29.4290700Z 
2026-05-16T03:15:29.8690749Z No config path provided, using default 'drizzle.config.ts'
2026-05-16T03:15:29.8692420Z Reading config file '/home/runner/work/rebno/rebno/packages/db/drizzle.config.ts'
2026-05-16T03:15:30.2383105Z 8 tables
2026-05-16T03:15:30.2463991Z accounts 8 columns 1 indexes 0 fks
2026-05-16T03:15:30.2514002Z audit_log 6 columns 0 indexes 2 fks
2026-05-16T03:15:30.2553764Z characters 9 columns 0 indexes 1 fks
2026-05-16T03:15:30.2573950Z inventory_items 4 columns 0 indexes 1 fks
2026-05-16T03:15:30.2613852Z legacy_credentials_staging 6 columns 0 indexes 0 fks
2026-05-16T03:15:30.2633771Z message_board_replies 5 columns 0 indexes 2 fks
2026-05-16T03:15:30.2639288Z message_board_topics 7 columns 0 indexes 1 fks
2026-05-16T03:15:30.2646614Z sessions 5 columns 0 indexes 1 fks
2026-05-16T03:15:30.2647091Z 
2026-05-16T03:15:30.2647958Z No schema changes, nothing to migrate 😴
2026-05-16T03:15:30.3749392Z 
2026-05-16T03:15:30.3750341Z === Drizzle: schema-sync ===
2026-05-16T03:15:30.3751245Z >>> pnpm lint:schema-sync
2026-05-16T03:15:30.6712465Z 
2026-05-16T03:15:30.6713559Z > rebno@0.0.0 lint:schema-sync /home/runner/work/rebno/rebno
2026-05-16T03:15:30.6716880Z > node -e "const a=require('fs').readFileSync('packages/db/migrations/0001_baseline.sql');const b=require('fs').readFileSync('docs/extracted-server/0001_baseline.sql');if(Buffer.compare(a,b)!==0){console.error('docs/extracted-server/0001_baseline.sql out of sync with packages/db/migrations/0001_baseline.sql');process.exit(1)}console.log('OK')"
2026-05-16T03:15:30.6719402Z 
2026-05-16T03:15:30.6997704Z OK
2026-05-16T03:15:30.7128539Z 
2026-05-16T03:15:30.7129302Z === Drizzle: source-comments ===
2026-05-16T03:15:30.7130223Z >>> pnpm lint:source-comments
2026-05-16T03:15:31.0225277Z 
2026-05-16T03:15:31.0226611Z > rebno@0.0.0 lint:source-comments /home/runner/work/rebno/rebno
2026-05-16T03:15:31.0227717Z > pnpm -C packages/db run lint:source-comments
2026-05-16T03:15:31.0228314Z 
2026-05-16T03:15:31.3145670Z 
2026-05-16T03:15:31.3147535Z > @rebno/db@0.1.0 lint:source-comments /home/runner/work/rebno/rebno/packages/db
2026-05-16T03:15:31.3148702Z > node scripts/check-source-comments.mjs
2026-05-16T03:15:31.3149456Z 
2026-05-16T03:15:31.3480916Z check-source-comments: OK (50 columns, all SOURCE-cited)
2026-05-16T03:15:31.3718300Z 
2026-05-16T03:15:31.3719004Z === Workspace: test ===
2026-05-16T03:15:31.3719615Z >>> pnpm -r test
2026-05-16T03:15:31.6673411Z Scope: 5 of 6 workspace projects
2026-05-16T03:15:31.6727007Z packages/db test$ vitest run
2026-05-16T03:15:31.6735257Z packages/game-logic test$ vitest run
2026-05-16T03:15:32.1615639Z packages/game-logic test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/packages/game-logic[39m
2026-05-16T03:15:32.1632789Z packages/db test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/packages/db[39m
2026-05-16T03:15:32.5815815Z packages/game-logic test:  [32m✓[39m test/platform-cycle.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 18[2mms[22m[39m
2026-05-16T03:15:32.7846809Z packages/game-logic test:  [32m✓[39m test/accumulator.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:15:33.0375550Z packages/game-logic test:  [32m✓[39m test/step-bno-fidelity.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 15[2mms[22m[39m
2026-05-16T03:15:33.0904695Z packages/db test:  [32m✓[39m tests/schema-shape.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 12[2mms[22m[39m
2026-05-16T03:15:33.2715547Z packages/game-logic test:  [32m✓[39m test/golden.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 11[2mms[22m[39m
2026-05-16T03:15:33.3268091Z packages/db test:  [32m✓[39m tests/save-format-traceability.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:15:33.4966296Z packages/game-logic test:  [32m✓[39m test/movement-constants.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:15:33.7080626Z packages/game-logic test:  [32m✓[39m test/rng.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:15:33.9285401Z packages/game-logic test:  [32m✓[39m test/wall-slide.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-16T03:15:34.1382147Z packages/game-logic test:  [32m✓[39m test/navi-mask-bbox.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 6[2mms[22m[39m
2026-05-16T03:15:34.1482490Z packages/db test:  [32m✓[39m tests/promotion.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-16T03:15:34.1541721Z packages/db test: [2m Test Files [22m [1m[32m3 passed[39m[22m[90m (3)[39m
2026-05-16T03:15:34.1564379Z packages/db test: [2m      Tests [22m [1m[32m22 passed[39m[22m[90m (22)[39m
2026-05-16T03:15:34.1568407Z packages/db test: [2m   Start at [22m 03:15:32
2026-05-16T03:15:34.1571847Z packages/db test: [2m   Duration [22m 1.99s[2m (transform 170ms, setup 0ms, import 1.36s, tests 27ms, environment 0ms)[22m
2026-05-16T03:15:34.1894447Z packages/db test: Done
2026-05-16T03:15:34.1904731Z packages/protocol test$ vitest run
2026-05-16T03:15:34.3995722Z packages/game-logic test:  [32m✓[39m test/sprite-state-machine.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:15:34.6085494Z packages/game-logic test:  [32m✓[39m test/run-speed.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-16T03:15:34.7240350Z packages/protocol test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/packages/protocol[39m
2026-05-16T03:15:34.8343811Z packages/game-logic test:  [32m✓[39m test/walkable-edge.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-16T03:15:34.8425414Z packages/game-logic test: [2m Test Files [22m [1m[32m11 passed[39m[22m[90m (11)[39m
2026-05-16T03:15:34.8429759Z packages/game-logic test: [2m      Tests [22m [1m[32m55 passed[39m[22m[90m (55)[39m
2026-05-16T03:15:34.8464908Z packages/game-logic test: [2m   Start at [22m 03:15:32
2026-05-16T03:15:34.8486590Z packages/game-logic test: [2m   Duration [22m 2.67s[2m (transform 254ms, setup 0ms, import 461ms, tests 91ms, environment 2ms)[22m
2026-05-16T03:15:34.8787420Z packages/game-logic test: Done
2026-05-16T03:15:35.0690907Z packages/protocol test:  [32m✓[39m test/codec.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 14[2mms[22m[39m
2026-05-16T03:15:35.2358839Z packages/protocol test:  [32m✓[39m test/intents.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-16T03:15:35.4029148Z packages/protocol test:  [32m✓[39m test/state.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:15:35.5544057Z packages/protocol test:  [32m✓[39m test/schema-shape.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-16T03:15:35.5590319Z packages/protocol test: [2m Test Files [22m [1m[32m4 passed[39m[22m[90m (4)[39m
2026-05-16T03:15:35.5602733Z packages/protocol test: [2m      Tests [22m [1m[32m36 passed[39m[22m[90m (36)[39m
2026-05-16T03:15:35.5604264Z packages/protocol test: [2m   Start at [22m 03:15:34
2026-05-16T03:15:35.5605938Z packages/protocol test: [2m   Duration [22m 824ms[2m (transform 116ms, setup 0ms, import 226ms, tests 34ms, environment 0ms)[22m
2026-05-16T03:15:35.5938770Z packages/protocol test: Done
2026-05-16T03:15:35.5943771Z apps/client test$ vitest run --exclude 'test/e2e/**'
2026-05-16T03:15:35.5947724Z apps/server test$ vitest run --exclude 'test/**/*.integ.test.ts'
2026-05-16T03:15:36.1361340Z apps/server test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/apps/server[39m
2026-05-16T03:15:36.1885482Z apps/client test: [1m[46m RUN [49m[22m [36mv3.2.4 [39m[90m/home/runner/work/rebno/rebno/apps/client[39m
2026-05-16T03:15:37.1164173Z apps/server test: {"level":30,"time":1778901337114,"pid":4826,"hostname":"runnervmrw5os","password":"[Redacted]","session_token":"[Redacted]","msg":"login"}
2026-05-16T03:15:37.1211150Z apps/server test:  [32m✓[39m test/otel-init.test.ts [2m([22m[2m4 tests[22m[2m)[22m[33m 692[2mms[22m[39m
2026-05-16T03:15:37.1234906Z apps/server test:      [33m[2m✓[22m[39m does not throw when OTEL_EXPORTER_OTLP_ENDPOINT is unset [33m 574[2mms[22m[39m
2026-05-16T03:15:37.5474550Z apps/server test:  [32m✓[39m test/layout-derive.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 128[2mms[22m[39m
2026-05-16T03:15:38.1036598Z apps/client test: [90mstderr[2m | src/__test__/game-scene.test.ts[2m > [22m[2mscenes/GameScene[2m > [22m[2mtest 5: onRoomLayout calls verifyRoomLayout first; render skipped on false
2026-05-16T03:15:38.1045161Z apps/client test: [22m[39mroom_layout signature did not verify — rendering anyway (defense-in-depth; see 06.1-D40-SPIKE.md) mvp-lobby 000
2026-05-16T03:15:38.1695187Z apps/client test:  [32m✓[39m src/__test__/game-scene.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 198[2mms[22m[39m
2026-05-16T03:15:38.6700549Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 1: fresh DB — migrate creates accounts table and records migration row
2026-05-16T03:15:38.6784954Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-oeUUVx/rebno.db
2026-05-16T03:15:38.6834314Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-16T03:15:38.6854563Z apps/server test: [run-migrations] OK
2026-05-16T03:15:38.7074928Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 2: pre-bootstrapped DB (Assumption A7) — reconcile seeds row before migrate runs
2026-05-16T03:15:38.7099246Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-ER8i9g/rebno.db
2026-05-16T03:15:38.7133915Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-16T03:15:38.7136247Z apps/server test: [run-migrations] reconciled __drizzle_migrations for pre-bootstrap DB (Assumption A7) — seeded 0001_baseline
2026-05-16T03:15:38.7231041Z apps/server test: [run-migrations] OK
2026-05-16T03:15:38.7284965Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 3: idempotent second run — no error, no extra rows
2026-05-16T03:15:38.7286867Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-p5slBJ/rebno.db
2026-05-16T03:15:38.7324974Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-16T03:15:38.7365529Z apps/server test: [run-migrations] OK
2026-05-16T03:15:38.7385201Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 3: idempotent second run — no error, no extra rows
2026-05-16T03:15:38.7415474Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-p5slBJ/rebno.db
2026-05-16T03:15:38.7440235Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-16T03:15:38.7463907Z apps/server test: [run-migrations] OK
2026-05-16T03:15:38.7474705Z apps/server test:  [32m✓[39m test/run-migrations.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 72[2mms[22m[39m
2026-05-16T03:15:39.4338644Z apps/client test:  [32m✓[39m src/__test__/sprite-state-machine.teleport-gate.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 81[2mms[22m[39m
2026-05-16T03:15:39.7545461Z apps/server test:  [32m✓[39m test/persistence.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 61[2mms[22m[39m
2026-05-16T03:15:40.0447032Z apps/server test:  [32m✓[39m test/log.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 16[2mms[22m[39m
2026-05-16T03:15:40.3006484Z apps/server test:  [32m✓[39m test/legacy-login.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 11[2mms[22m[39m
2026-05-16T03:15:40.5825862Z apps/client test:  [32m✓[39m src/__test__/nameplate.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 73[2mms[22m[39m
2026-05-16T03:15:40.6015267Z apps/server test: {"level":40,"time":1778901340599,"pid":4947,"hostname":"runnervmrw5os","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-16T03:15:40.6077497Z apps/server test: {"level":40,"time":1778901340603,"pid":4947,"hostname":"runnervmrw5os","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-16T03:15:40.6110481Z apps/server test: {"level":40,"time":1778901340604,"pid":4947,"hostname":"runnervmrw5os","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-16T03:15:40.6117444Z apps/server test:  [32m✓[39m test/staging-invite.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 12[2mms[22m[39m
2026-05-16T03:15:40.9195933Z apps/server test:  [32m✓[39m test/room-key.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 35[2mms[22m[39m
2026-05-16T03:15:41.2035467Z apps/server test:  [32m✓[39m test/rate-limit.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 9[2mms[22m[39m
2026-05-16T03:15:41.4370662Z apps/server test:  [32m✓[39m test/admin-stubs.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-16T03:15:41.6674348Z apps/server test:  [32m✓[39m test/health.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:15:41.7276695Z apps/client test:  [32m✓[39m src/__test__/chat-hud.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 119[2mms[22m[39m
2026-05-16T03:15:42.4792965Z apps/server test: [90mstdout[2m | test/tick-accumulator.test.ts
2026-05-16T03:15:42.4814848Z apps/server test: [22m[39m◇ injected env (50) from ../../../../../../../etc/environment // tip: ◈ encrypted .env [www.dotenvx.com]
2026-05-16T03:15:42.4840941Z apps/server test: ℹ️  optional .env file not found: .env.test, .env
2026-05-16T03:15:42.9586870Z apps/client test:  [32m✓[39m src/__test__/esc-menu.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 139[2mms[22m[39m
2026-05-16T03:15:43.1735776Z apps/server test:  [32m✓[39m test/tick-accumulator.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-16T03:15:43.1844684Z apps/server test: [2m Test Files [22m [1m[32m12 passed[39m[22m[90m (12)[39m
2026-05-16T03:15:43.1864417Z apps/server test: [2m      Tests [22m [1m[32m70 passed[39m[22m[90m (70)[39m
2026-05-16T03:15:43.1869255Z apps/server test: [2m   Start at [22m 03:15:36
2026-05-16T03:15:43.1889521Z apps/server test: [2m   Duration [22m 7.03s[2m (transform 527ms, setup 0ms, import 3.28s, tests 1.06s, environment 2ms)[22m
2026-05-16T03:15:43.2354874Z apps/server test: Done
2026-05-16T03:15:43.7794809Z apps/client test:  [32m✓[39m src/__test__/reconnect.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 72[2mms[22m[39m
2026-05-16T03:15:44.5152116Z apps/client test:  [32m✓[39m src/__test__/background-renderer.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 74[2mms[22m[39m
2026-05-16T03:15:45.2478628Z apps/client test:  [32m✓[39m src/__test__/force-reset-overlay.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 72[2mms[22m[39m
2026-05-16T03:15:45.9421199Z apps/client test:  [32m✓[39m src/__test__/nameplate-color.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 31[2mms[22m[39m
2026-05-16T03:15:46.6327734Z apps/client test:  [32m✓[39m src/__test__/nameplate-stability.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 15[2mms[22m[39m
2026-05-16T03:15:47.3289838Z apps/client test:  [32m✓[39m src/__test__/player-renderer-spawn-delay.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 19[2mms[22m[39m
2026-05-16T03:15:48.0192841Z apps/client test:  [32m✓[39m src/__test__/input-dispatcher.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 16[2mms[22m[39m
2026-05-16T03:15:48.7057708Z apps/client test:  [32m✓[39m src/__test__/player-renderer.teleport.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 14[2mms[22m[39m
2026-05-16T03:15:49.3836935Z apps/client test:  [32m✓[39m src/__test__/login-scene.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 10[2mms[22m[39m
2026-05-16T03:15:50.0978782Z apps/client test:  [32m✓[39m src/__test__/colyseus-client.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 10[2mms[22m[39m
2026-05-16T03:15:50.7800037Z apps/client test:  [32m✓[39m src/__test__/sprite-state-machine.test.ts [2m([22m[2m29 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:15:51.4349357Z apps/client test:  [32m✓[39m src/__test__/room-layout-verify.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 9[2mms[22m[39m
2026-05-16T03:15:52.0972865Z apps/client test:  [32m✓[39m src/__test__/atlas-loader.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:15:52.7546946Z apps/client test:  [32m✓[39m src/__test__/input-dispatcher-shift.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:15:53.4372421Z apps/client test:  [32m✓[39m src/__test__/boot-font-gate.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:15:54.1374739Z apps/client test:  [32m✓[39m src/__test__/reconciler.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:15:54.8227481Z apps/client test:  [32m✓[39m src/__test__/auth-client.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 6[2mms[22m[39m
2026-05-16T03:15:55.4885201Z apps/client test:  [32m✓[39m src/__test__/room-collision-bottom-edge.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-16T03:15:56.1743593Z apps/client test:  [32m✓[39m src/__test__/prediction.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-16T03:15:56.8587117Z apps/client test:  [32m✓[39m src/__test__/room-renderer.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-16T03:15:57.5266518Z apps/client test:  [32m✓[39m src/__test__/extrapolation.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-16T03:15:58.1909934Z apps/client test:  [32m✓[39m src/__test__/protocol-version-check.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-16T03:15:58.8632924Z apps/client test:  [32m✓[39m src/__test__/sprite-state-rate.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-16T03:15:59.5601099Z apps/client test:  [32m✓[39m src/__test__/env.test.ts [2m([22m[2m5 tests[22m[2m | [22m[33m4 skipped[39m[2m)[22m[32m 4[2mms[22m[39m
2026-05-16T03:16:00.2257700Z apps/client test:  [32m✓[39m src/__test__/legacy-origin.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-16T03:16:00.9320858Z apps/client test:  [32m✓[39m src/__test__/depth-set.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-16T03:16:00.9556492Z apps/client test: [2m Test Files [22m [1m[32m31 passed[39m[22m[90m (31)[39m
2026-05-16T03:16:00.9564517Z apps/client test: [2m      Tests [22m [1m[32m213 passed[39m[22m[2m | [22m[90m4 todo[39m[90m (217)[39m
2026-05-16T03:16:00.9565610Z apps/client test: [2m   Start at [22m 03:15:36
2026-05-16T03:16:00.9567069Z apps/client test: [2m   Duration [22m 24.76s[2m (transform 842ms, setup 64ms, collect 1.48s, tests 1.04s, environment 14.57s, prepare 2.70s)[22m
2026-05-16T03:16:01.1104401Z apps/client test: Done
2026-05-16T03:16:01.1194224Z 
2026-05-16T03:16:01.1195026Z verify-phase-4: OK (12 steps green)
2026-05-16T03:16:01.1314565Z 
2026-05-16T03:16:01.1315231Z === Workspace: typecheck ===
2026-05-16T03:16:01.1316096Z >>> pnpm -r typecheck
2026-05-16T03:16:01.4335682Z Scope: 5 of 6 workspace projects
2026-05-16T03:16:01.4387269Z packages/db typecheck$ tsc --noEmit
2026-05-16T03:16:01.4395787Z packages/game-logic typecheck$ tsc --noEmit
2026-05-16T03:16:04.0724708Z packages/game-logic typecheck: Done
2026-05-16T03:16:04.0744245Z packages/protocol typecheck$ tsc --noEmit
2026-05-16T03:16:05.8465792Z packages/db typecheck: Done
2026-05-16T03:16:07.3839445Z packages/protocol typecheck: Done
2026-05-16T03:16:07.3847860Z apps/client typecheck$ tsc --noEmit
2026-05-16T03:16:07.3850279Z apps/server typecheck$ tsc --noEmit
2026-05-16T03:16:19.4944870Z apps/client typecheck: Done
2026-05-16T03:16:20.0743115Z apps/server typecheck: Done
2026-05-16T03:16:20.0849059Z 
2026-05-16T03:16:20.0849591Z === Lint: deploy-stack ===
2026-05-16T03:16:20.0850239Z >>> pnpm lint:deploy-stack
2026-05-16T03:16:20.3740916Z 
2026-05-16T03:16:20.3742058Z > rebno@0.0.0 lint:deploy-stack /home/runner/work/rebno/rebno
2026-05-16T03:16:20.3743593Z > node tools/scripts/lint-deploy-stack.mjs
2026-05-16T03:16:20.3744211Z 
2026-05-16T03:16:20.4051386Z lint-deploy-stack: OK
2026-05-16T03:16:20.4191019Z 
2026-05-16T03:16:20.4191642Z === Lint: deploy-stack test ===
2026-05-16T03:16:20.4192353Z >>> pnpm lint:deploy-stack:test
2026-05-16T03:16:20.7083799Z 
2026-05-16T03:16:20.7085502Z > rebno@0.0.0 lint:deploy-stack:test /home/runner/work/rebno/rebno
2026-05-16T03:16:20.7086563Z > node tools/scripts/lint-deploy-stack.test.mjs
2026-05-16T03:16:20.7087175Z 
2026-05-16T03:16:20.7723032Z PASS: lint-deploy-stack green
2026-05-16T03:16:20.7861017Z 
2026-05-16T03:16:20.7861593Z === ADR 0005 lint ===
2026-05-16T03:16:20.7862309Z >>> pnpm lint:adr:0005
2026-05-16T03:16:21.0751203Z 
2026-05-16T03:16:21.0752396Z > rebno@0.0.0 lint:adr:0005 /home/runner/work/rebno/rebno
2026-05-16T03:16:21.0754307Z > node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0005-deploy-topology.md --no-matrix
2026-05-16T03:16:21.0755271Z 
2026-05-16T03:16:21.1077623Z OK: ADR docs/adr/0005-deploy-topology.md validated (no-matrix mode — Michael Nygard sections present)
2026-05-16T03:16:21.1202366Z 
2026-05-16T03:16:21.1202925Z === ADR 0006 lint ===
2026-05-16T03:16:21.1204506Z >>> pnpm lint:adr:0006
2026-05-16T03:16:21.4116342Z 
2026-05-16T03:16:21.4117097Z > rebno@0.0.0 lint:adr:0006 /home/runner/work/rebno/rebno
2026-05-16T03:16:21.4118225Z > node tools/asset-catalog/scripts/lint-adr.mjs docs/adr/0006-observability-stack.md --no-matrix
2026-05-16T03:16:21.4118885Z 
2026-05-16T03:16:21.4432845Z OK: ADR docs/adr/0006-observability-stack.md validated (no-matrix mode — Michael Nygard sections present)
2026-05-16T03:16:21.4557787Z 
2026-05-16T03:16:21.4558420Z === Workspace: test ===
2026-05-16T03:16:21.4558998Z >>> pnpm -r test
2026-05-16T03:16:21.7557334Z Scope: 5 of 6 workspace projects
2026-05-16T03:16:21.7608724Z packages/db test$ vitest run
2026-05-16T03:16:21.7617999Z packages/game-logic test$ vitest run
2026-05-16T03:16:22.2565652Z packages/game-logic test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/packages/game-logic[39m
2026-05-16T03:16:22.2600195Z packages/db test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/packages/db[39m
2026-05-16T03:16:22.6325742Z packages/game-logic test:  [32m✓[39m test/platform-cycle.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 16[2mms[22m[39m
2026-05-16T03:16:22.8761172Z packages/game-logic test:  [32m✓[39m test/step-bno-fidelity.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 13[2mms[22m[39m
2026-05-16T03:16:23.1097194Z packages/game-logic test:  [32m✓[39m test/golden.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 10[2mms[22m[39m
2026-05-16T03:16:23.1825299Z packages/db test:  [32m✓[39m tests/schema-shape.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 13[2mms[22m[39m
2026-05-16T03:16:23.3455796Z packages/game-logic test:  [32m✓[39m test/movement-constants.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-16T03:16:23.5680573Z packages/game-logic test:  [32m✓[39m test/rng.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:16:23.7710725Z packages/game-logic test:  [32m✓[39m test/sprite-state-machine.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 6[2mms[22m[39m
2026-05-16T03:16:23.9965588Z packages/game-logic test:  [32m✓[39m test/accumulator.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:16:24.0075101Z packages/db test:  [32m✓[39m tests/promotion.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 9[2mms[22m[39m
2026-05-16T03:16:24.2167861Z packages/game-logic test:  [32m✓[39m test/navi-mask-bbox.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 6[2mms[22m[39m
2026-05-16T03:16:24.2215165Z packages/db test:  [32m✓[39m tests/save-format-traceability.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-16T03:16:24.2304995Z packages/db test: [2m Test Files [22m [1m[32m3 passed[39m[22m[90m (3)[39m
2026-05-16T03:16:24.2310638Z packages/db test: [2m      Tests [22m [1m[32m22 passed[39m[22m[90m (22)[39m
2026-05-16T03:16:24.2324165Z packages/db test: [2m   Start at [22m 03:16:22
2026-05-16T03:16:24.2335625Z packages/db test: [2m   Duration [22m 1.97s[2m (transform 177ms, setup 0ms, import 1.36s, tests 30ms, environment 0ms)[22m
2026-05-16T03:16:24.2618395Z packages/db test: Done
2026-05-16T03:16:24.2625313Z packages/protocol test$ vitest run
2026-05-16T03:16:24.4450483Z packages/game-logic test:  [32m✓[39m test/run-speed.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-16T03:16:24.6650279Z packages/game-logic test:  [32m✓[39m test/wall-slide.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-16T03:16:24.8039402Z packages/protocol test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/packages/protocol[39m
2026-05-16T03:16:24.8920824Z packages/game-logic test:  [32m✓[39m test/walkable-edge.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 12[2mms[22m[39m
2026-05-16T03:16:24.9009656Z packages/game-logic test: [2m Test Files [22m [1m[32m11 passed[39m[22m[90m (11)[39m
2026-05-16T03:16:24.9034427Z packages/game-logic test: [2m      Tests [22m [1m[32m55 passed[39m[22m[90m (55)[39m
2026-05-16T03:16:24.9035751Z packages/game-logic test: [2m   Start at [22m 03:16:22
2026-05-16T03:16:24.9054611Z packages/game-logic test: [2m   Duration [22m 2.63s[2m (transform 224ms, setup 0ms, import 456ms, tests 95ms, environment 2ms)[22m
2026-05-16T03:16:24.9325527Z packages/game-logic test: Done
2026-05-16T03:16:25.1404223Z packages/protocol test:  [32m✓[39m test/codec.test.ts [2m([22m[2m18 tests[22m[2m)[22m[32m 14[2mms[22m[39m
2026-05-16T03:16:25.3083713Z packages/protocol test:  [32m✓[39m test/intents.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 9[2mms[22m[39m
2026-05-16T03:16:25.4806059Z packages/protocol test:  [32m✓[39m test/state.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:16:25.6333680Z packages/protocol test:  [32m✓[39m test/schema-shape.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-16T03:16:25.6365633Z packages/protocol test: [2m Test Files [22m [1m[32m4 passed[39m[22m[90m (4)[39m
2026-05-16T03:16:25.6368019Z packages/protocol test: [2m      Tests [22m [1m[32m36 passed[39m[22m[90m (36)[39m
2026-05-16T03:16:25.6369237Z packages/protocol test: [2m   Start at [22m 03:16:24
2026-05-16T03:16:25.6370840Z packages/protocol test: [2m   Duration [22m 823ms[2m (transform 118ms, setup 0ms, import 230ms, tests 35ms, environment 0ms)[22m
2026-05-16T03:16:25.6719999Z packages/protocol test: Done
2026-05-16T03:16:25.6726442Z apps/client test$ vitest run --exclude 'test/e2e/**'
2026-05-16T03:16:25.6727821Z apps/server test$ vitest run --exclude 'test/**/*.integ.test.ts'
2026-05-16T03:16:26.1852582Z apps/server test: [1m[30m[46m RUN [49m[39m[22m [36mv4.1.5 [39m[90m/home/runner/work/rebno/rebno/apps/server[39m
2026-05-16T03:16:26.2891786Z apps/client test: [1m[46m RUN [49m[22m [36mv3.2.4 [39m[90m/home/runner/work/rebno/rebno/apps/client[39m
2026-05-16T03:16:27.1484376Z apps/server test: {"level":30,"time":1778901387144,"pid":6053,"hostname":"runnervmrw5os","password":"[Redacted]","session_token":"[Redacted]","msg":"login"}
2026-05-16T03:16:27.1517997Z apps/server test:  [32m✓[39m test/otel-init.test.ts [2m([22m[2m4 tests[22m[2m)[22m[33m 672[2mms[22m[39m
2026-05-16T03:16:27.1534719Z apps/server test:      [33m[2m✓[22m[39m does not throw when OTEL_EXPORTER_OTLP_ENDPOINT is unset [33m 560[2mms[22m[39m
2026-05-16T03:16:27.6854156Z apps/server test:  [32m✓[39m test/layout-derive.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 175[2mms[22m[39m
2026-05-16T03:16:28.2275955Z apps/client test: [90mstderr[2m | src/__test__/game-scene.test.ts[2m > [22m[2mscenes/GameScene[2m > [22m[2mtest 5: onRoomLayout calls verifyRoomLayout first; render skipped on false
2026-05-16T03:16:28.2293860Z apps/client test: [22m[39mroom_layout signature did not verify — rendering anyway (defense-in-depth; see 06.1-D40-SPIKE.md) mvp-lobby 000
2026-05-16T03:16:28.3075797Z apps/client test:  [32m✓[39m src/__test__/game-scene.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 230[2mms[22m[39m
2026-05-16T03:16:28.6536218Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 1: fresh DB — migrate creates accounts table and records migration row
2026-05-16T03:16:28.6557390Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-NTaCeE/rebno.db
2026-05-16T03:16:28.6585148Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-16T03:16:28.6586238Z apps/server test: [run-migrations] OK
2026-05-16T03:16:28.6706138Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 2: pre-bootstrapped DB (Assumption A7) — reconcile seeds row before migrate runs
2026-05-16T03:16:28.6734660Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-OOqgNZ/rebno.db
2026-05-16T03:16:28.6752692Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-16T03:16:28.6784922Z apps/server test: [run-migrations] reconciled __drizzle_migrations for pre-bootstrap DB (Assumption A7) — seeded 0001_baseline
2026-05-16T03:16:28.6823869Z apps/server test: [run-migrations] OK
2026-05-16T03:16:28.6855369Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 3: idempotent second run — no error, no extra rows
2026-05-16T03:16:28.6877916Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-3i11r5/rebno.db
2026-05-16T03:16:28.6898614Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-16T03:16:28.6914113Z apps/server test: [run-migrations] OK
2026-05-16T03:16:28.6938899Z apps/server test: [90mstdout[2m | test/run-migrations.test.ts[2m > [22m[2mrun-migrations.ts (Plan 12)[2m > [22m[2mScenario 3: idempotent second run — no error, no extra rows
2026-05-16T03:16:28.6940907Z apps/server test: [22m[39m[run-migrations] opening /tmp/rebno-migrate-test-3i11r5/rebno.db
2026-05-16T03:16:28.6942428Z apps/server test: [run-migrations] migrationsFolder=/home/runner/work/rebno/rebno/packages/db/migrations
2026-05-16T03:16:28.6943739Z apps/server test: [run-migrations] OK
2026-05-16T03:16:28.6945311Z apps/server test:  [32m✓[39m test/run-migrations.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 73[2mms[22m[39m
2026-05-16T03:16:29.4421809Z apps/client test:  [32m✓[39m src/__test__/esc-menu.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 122[2mms[22m[39m
2026-05-16T03:16:29.7835345Z apps/server test:  [32m✓[39m test/persistence.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 73[2mms[22m[39m
2026-05-16T03:16:30.0804345Z apps/server test:  [32m✓[39m test/room-key.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 24[2mms[22m[39m
2026-05-16T03:16:30.3479909Z apps/server test:  [32m✓[39m test/log.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 15[2mms[22m[39m
2026-05-16T03:16:30.6155559Z apps/server test: {"level":40,"time":1778901390605,"pid":6172,"hostname":"runnervmrw5os","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-16T03:16:30.6214950Z apps/server test:  [32m✓[39m test/staging-invite.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 21[2mms[22m[39m
2026-05-16T03:16:30.6314767Z apps/server test: {"level":40,"time":1778901390610,"pid":6172,"hostname":"runnervmrw5os","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-16T03:16:30.6354605Z apps/server test: {"level":40,"time":1778901390613,"pid":6172,"hostname":"runnervmrw5os","path":"/api/foo","msg":"staging_invite_rejected"}
2026-05-16T03:16:30.6617221Z apps/client test:  [32m✓[39m src/__test__/chat-hud.test.ts [2m([22m[2m9 tests[22m[2m)[22m[32m 152[2mms[22m[39m
2026-05-16T03:16:30.9011537Z apps/server test:  [32m✓[39m test/legacy-login.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 21[2mms[22m[39m
2026-05-16T03:16:31.1291560Z apps/server test:  [32m✓[39m test/rate-limit.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 10[2mms[22m[39m
2026-05-16T03:16:31.3595452Z apps/server test:  [32m✓[39m test/admin-stubs.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 9[2mms[22m[39m
2026-05-16T03:16:32.0035813Z apps/client test:  [32m✓[39m src/__test__/sprite-state-machine.teleport-gate.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 90[2mms[22m[39m
2026-05-16T03:16:32.1536882Z apps/server test: [90mstdout[2m | test/tick-accumulator.test.ts
2026-05-16T03:16:32.1603078Z apps/server test: [22m[39m◇ injected env (50) from ../../../../../../../etc/environment // tip: ⌘ custom filepath { path: '/custom/path/.env' }
2026-05-16T03:16:32.1634460Z apps/server test: ℹ️  optional .env file not found: .env.test, .env
2026-05-16T03:16:32.8862903Z apps/server test:  [32m✓[39m test/tick-accumulator.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:16:33.1032996Z apps/server test:  [32m✓[39m test/health.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:16:33.1064512Z apps/server test: [2m Test Files [22m [1m[32m12 passed[39m[22m[90m (12)[39m
2026-05-16T03:16:33.1078652Z apps/server test: [2m      Tests [22m [1m[32m70 passed[39m[22m[90m (70)[39m
2026-05-16T03:16:33.1083418Z apps/server test: [2m   Start at [22m 03:16:26
2026-05-16T03:16:33.1110074Z apps/server test: [2m   Duration [22m 6.91s[2m (transform 547ms, setup 0ms, import 3.32s, tests 1.11s, environment 2ms)[22m
2026-05-16T03:16:33.1586809Z apps/client test:  [32m✓[39m src/__test__/background-renderer.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 114[2mms[22m[39m
2026-05-16T03:16:33.1710864Z apps/server test: Done
2026-05-16T03:16:33.8647083Z apps/client test:  [32m✓[39m src/__test__/nameplate.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 40[2mms[22m[39m
2026-05-16T03:16:34.5934616Z apps/client test:  [32m✓[39m src/__test__/reconnect.test.ts [2m([22m[2m13 tests[22m[2m)[22m[32m 68[2mms[22m[39m
2026-05-16T03:16:35.3041415Z apps/client test:  [32m✓[39m src/__test__/force-reset-overlay.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 70[2mms[22m[39m
2026-05-16T03:16:35.9940884Z apps/client test:  [32m✓[39m src/__test__/nameplate-color.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 31[2mms[22m[39m
2026-05-16T03:16:36.6847829Z apps/client test:  [32m✓[39m src/__test__/player-renderer-spawn-delay.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 20[2mms[22m[39m
2026-05-16T03:16:37.3862583Z apps/client test:  [32m✓[39m src/__test__/input-dispatcher.test.ts [2m([22m[2m12 tests[22m[2m)[22m[32m 16[2mms[22m[39m
2026-05-16T03:16:38.0916554Z apps/client test:  [32m✓[39m src/__test__/nameplate-stability.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 15[2mms[22m[39m
2026-05-16T03:16:38.7976149Z apps/client test:  [32m✓[39m src/__test__/player-renderer.teleport.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 14[2mms[22m[39m
2026-05-16T03:16:39.5102148Z apps/client test:  [32m✓[39m src/__test__/login-scene.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 11[2mms[22m[39m
2026-05-16T03:16:40.2583951Z apps/client test:  [32m✓[39m src/__test__/colyseus-client.test.ts [2m([22m[2m8 tests[22m[2m)[22m[32m 10[2mms[22m[39m
2026-05-16T03:16:40.9416159Z apps/client test:  [32m✓[39m src/__test__/room-layout-verify.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 9[2mms[22m[39m
2026-05-16T03:16:41.6377671Z apps/client test:  [32m✓[39m src/__test__/boot-font-gate.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:16:42.3235765Z apps/client test:  [32m✓[39m src/__test__/atlas-loader.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 8[2mms[22m[39m
2026-05-16T03:16:42.9893643Z apps/client test:  [32m✓[39m src/__test__/input-dispatcher-shift.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:16:43.6858327Z apps/client test:  [32m✓[39m src/__test__/reconciler.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:16:44.4089516Z apps/client test:  [32m✓[39m src/__test__/sprite-state-machine.test.ts [2m([22m[2m29 tests[22m[2m)[22m[32m 7[2mms[22m[39m
2026-05-16T03:16:45.1011884Z apps/client test:  [32m✓[39m src/__test__/auth-client.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 6[2mms[22m[39m
2026-05-16T03:16:45.7655052Z apps/client test:  [32m✓[39m src/__test__/room-collision-bottom-edge.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-16T03:16:46.4824409Z apps/client test:  [32m✓[39m src/__test__/prediction.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-16T03:16:47.1949060Z apps/client test:  [32m✓[39m src/__test__/room-renderer.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-16T03:16:47.8656933Z apps/client test:  [32m✓[39m src/__test__/extrapolation.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 5[2mms[22m[39m
2026-05-16T03:16:48.5176849Z apps/client test:  [32m✓[39m src/__test__/protocol-version-check.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-16T03:16:49.1903536Z apps/client test:  [32m✓[39m src/__test__/sprite-state-rate.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-16T03:16:49.8583474Z apps/client test:  [32m✓[39m src/__test__/env.test.ts [2m([22m[2m5 tests[22m[2m | [22m[33m4 skipped[39m[2m)[22m[32m 4[2mms[22m[39m
2026-05-16T03:16:50.5179871Z apps/client test:  [32m✓[39m src/__test__/depth-set.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 3[2mms[22m[39m
2026-05-16T03:16:51.1731715Z apps/client test:  [32m✓[39m src/__test__/legacy-origin.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 4[2mms[22m[39m
2026-05-16T03:16:51.1955158Z apps/client test: [2m Test Files [22m [1m[32m31 passed[39m[22m[90m (31)[39m
2026-05-16T03:16:51.1971706Z apps/client test: [2m      Tests [22m [1m[32m213 passed[39m[22m[2m | [22m[90m4 todo[39m[90m (217)[39m
2026-05-16T03:16:51.1973097Z apps/client test: [2m   Start at [22m 03:16:26
2026-05-16T03:16:51.1979417Z apps/client test: [2m   Duration [22m 24.90s[2m (transform 880ms, setup 64ms, collect 1.53s, tests 1.09s, environment 14.67s, prepare 2.63s)[22m
2026-05-16T03:16:51.3320022Z apps/client test: Done
2026-05-16T03:16:51.3411102Z 
2026-05-16T03:16:51.3411763Z verify-phase-5: OK (7 steps green)
